In a typical model of computing, input data is provided to a computational process to produce a result, which may then be used for some purpose. For example, a user may insert a compact disc (CD) containing music into a computer, and a program executing on the computer may read the music data, convert it to an MP3-encoded format, and store it within a library for use with a portable media device. In many contexts, once a computational result is generated, there may be little concern over whether the result can be regenerated in exactly the same way. For example, having once encoded the CD, the above user might be unlikely to ever want to do so again, unless the encoded files were lost or corrupted. Even then, the user might simply re-encode the CD using a different computer or program, because it is unlikely that variations in the encoded output would be noticeable to the user. Even though two audio files may be different, they may be functionally equivalent in their actual use.
However, for some computing applications, being able to repeat a computation so as to reproduce results (e.g., exactly, or to a defined degree) may be important. For example, as part of the diligence required for regulatory approval, a drug manufacturer may supply the results of computer simulations of drug behavior. At some later time, it may be necessary to validate the results. For example, the manufacturer may be required to prove that the results upon which regulatory approval was granted were not fabricated, to prove that the results were generated under required assumptions or constraints, to prove that a required protocol was followed in generating the results, or may need to demonstrate the integrity of the results for other reasons. Thus, the manufacturer may need the capability to repeat the original simulations, in order to demonstrate that the original results follow from the original computational inputs.
But even small variations in hardware or software configuration between the time results are originally generated and the time they are reproduced may affect the exactness with which the reproduced results match the original ones, especially in applications where a high degree of numerical precision is needed. Moreover, hardware and software evolve at a rapid pace, with new versions of both emerging frequently. Thus, the pace of the technology replacement cycle tends to frustrate the goal of producing repeatable results, particularly after periods of years have elapsed.